笔记 Favorite JavaScript utilities in single line of code! No more!
Last Updated:2023-09-26
《Favorite JavaScript utilities in single line of code! No more!》笔记
优雅的一行js代码写法 post地址
Array
Array.isArray
来判断是否是array
const isArr = Array.isArray(arguments)
array.flatMap
有一个替代 array.map()的方法:array.flatMap()(从ES2019开始可用)。这个方法给了我们映射的能力,但也可以在生成的映射数组中删除甚至添加新的项目。
题目是: 快速生成'笛卡尔积'的数组
JavaScript version
const cartesian = (...sets) => sets.reduce((acc, set) => acc.flatMap((x) => set.map((y) => [...x, y])), [[]]);
Example
cartesian([1, 2], [3, 4]); // [ [1, 3], [1, 4], [2, 3], [2, 4] ]
/* 3 4
---------------
1 | [1, 3] [1, 4] |
2 | [2, 3] [2, 4]
*/
判断两个数组是否内容一致(不论数组元素的顺序)
关键是 new Set
和 数组的sort
函数
// `a` and `b` are arrays
const isEqual = (a, b) => JSON.stringify([...new Set(a)].sort()) === JSON.stringify([...new Set(b)].sort());
array.lastIndexOf
最后一次出现某个item的判断写法
const lastIndex = (arr, predicate) => arr.reduce((prev, curr, index) => (predicate(curr) ? index : prev), -1);// Orconst lastIndex = (arr, predicate) => arr.map((item) => predicate(item)).lastIndexOf(true);
DOM
判断是否是ie浏览器
const isIE = !!document.documentMode
判断touch events是否支持
const touchSupported = () =>
'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)
从一段文本中快速提取出html相关代码
使用 DOMParser
const stripHtml = (html) => new DOMParser().parseFromString(html, 'text/html').body.textContent || ''